package com.graduation.springbootinit.service;

import com.graduation.springbootinit.common.BaseResponse;
import com.graduation.springbootinit.model.entity.ShopPart.Order;
import com.graduation.springbootinit.model.vo.OrderDetailVO;
import java.util.List;

public interface OrderService {

    /**
     * 创建订单（直接购买）
     */
    BaseResponse<Order> createOrder(Long userId, Long productId, Integer quantity, Long addressId,String size);

    /**
     * 从购物车创建订单
     */
    BaseResponse<Order> createOrderFromCart(Long userId, Long cartId, Long addressId);

    /**
     * 获取订单详情
     */
    BaseResponse<Order> getOrderById(Long orderId);

    /**
     * 获取用户的订单列表
     */
    BaseResponse<List<Order>> getUserOrders(Long userId, Integer status);

    /**
     * 取消订单
     */
    BaseResponse<Boolean> cancelOrder(Long orderId);

    /**
     * 支付订单
     */
    BaseResponse<Boolean> payOrder(Long orderId);

    /**
     * 确认收货
     */
    BaseResponse<Boolean> confirmReceive(Long orderId);

    /**
     * 获取订单详情
     */
    BaseResponse<OrderDetailVO> getOrderDetail(Long orderId);

    /**
     * 发货
     */
    BaseResponse<Boolean> shipOrder(Long orderId);

    /**
     * 获取商户未发货订单列表
     * @param storeId 商户ID
     * @return 未发货订单列表
     */
    BaseResponse<List<Order>> getUnshippedOrdersByStore(Long storeId);

    /**
     * 获取商户订单列表
     * @param storeId 商户ID
     * @param status 订单状态（0待付款，1待发货，2待收货，3已完成，4已取消，5超时关闭）
     * @return 订单列表
     */
    BaseResponse<List<Order>> getOrdersByStore(Long storeId, Integer status);
}